package servico;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "servicos")
@SequenceGenerator( name = "SERV_ID", sequenceName = "SERV_SEQ", allocationSize = 1 )
public class EntidadeServico implements Serializable
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@Column(name = "codigo")
	@GeneratedValue( strategy = GenerationType.IDENTITY, generator = "SERV_ID" )
	private int codigo;
	@Column(name = "nome")
	private String nome;
	@Column(name = "descricao")
	private String descricao;
	@Column(name = "unidade_med")
	private String unidade_med;
	@Column(name = "valor")
	private float valor;
	@OneToMany(mappedBy = "servMat", cascade = CascadeType.ALL)
	@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
	private List<Item_mat> materiais = new ArrayList<Item_mat>();
	@OneToMany(mappedBy = "servEquip", cascade = CascadeType.ALL)
	@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
	private List<Item_equip> equipamentos = new ArrayList<Item_equip>();
	
	public void AdicionarMaterial(Item_mat item)
	{
	        materiais.add(item);
	        item.setServMat(this);
	}
	
	public void AdicionarServico(Item_equip item)
	{
	        equipamentos.add(item);
	        item.setServEquip(this);
	}
	
	public String getUnidade_med() {
		return unidade_med;
	}

	public void setUnidade_med(String unidade_med) {
		this.unidade_med = unidade_med;
	}

	public int getCodigo() {
		return codigo;
	}
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public float getValor() {
		return valor;
	}
	public void setValor(float valor) {
		this.valor = valor;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public List<Item_mat> getMateriais() {
		return materiais;
	}
	public void setMateriais(List<Item_mat> materiais) {
		this.materiais = materiais;
	}
	public List<Item_equip> getEquipamentos() {
		return equipamentos;
	}
	public void setEquipamentos(List<Item_equip> equipamentos) {
		this.equipamentos = equipamentos;
	}
}
